﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Scommesse.Presenters.Admin;

namespace Scommesse.View.Admin
{
    public partial class CategoriaDialog : Form
    {
        private ICategoriaPresenter _categoriaPresenter;

        public CategoriaDialog()
        {
            InitializeComponent();
        }

        public void AddListener(ICategoriaPresenter presenter)
        {
            _categoriaPresenter = presenter;
        }

        #region Properties

        public String SetTipologia
        {
            set { TipologieCheckedListBox.Items.Add(value); }
        }

        public List<String> GetTipologie
        {
            get { return TipologieCheckedListBox.CheckedItems.Cast<string>().ToList(); }
        }

        public int TipologieCount
        {
            get { return TipologieCheckedListBox.CheckedItems.Count; }
        }

        public String NomeCategoria
        {
            get { return NomeCategoriaTextBox.Text.Trim(); }
        }

        public String CategoriaError
        {
            set { CatErrorProvider.SetError(NomeCategoriaTextBox, value); }
        }

        public String CheckError
        {
            set { CheckErrorProvider.SetError(SelezionaTipologieLabel, value); }
        }

        public bool CatEsistente
        {
            set { EsisteLabel.Visible = value; }
        }

        #endregion

        // Inizializza la form appena viene showata per la prima volta
        private void CategoriaDialog_Shown(object sender, EventArgs e)
        {
            NomeCategoriaTextBox.Clear();
            TipologieCheckedListBox.Items.Clear();

            _categoriaPresenter.Load_View();
        }

        private void ConfermaAggiungiCategoriaButton_Click(object sender, EventArgs e)
        {
            EsisteLabel.Visible = false;
            CatErrorProvider.Clear();
            CheckErrorProvider.Clear();

            _categoriaPresenter.ConfermaAggiungiCategoria();
        }

        private void AnnullaAggiungiCategoriaButton_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void NomeCategoriaTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiCategoriaButton.PerformClick();
        }       
    }
}